package message;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;

import serveur.MainServer;
import common.*;
public class MessageOpenService extends Message {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	String m_sLogin ="";
	String m_sPassword ="";
	private static final Logger logger = Logger.getLogger(MainServer.class.getName());
	
	public MessageOpenService ()
	{
		m_iMessageId = Message.OpenServiceId;
		m_sMessageName = Message.sOpenServiceName;
	}
	
	public String getM_sLogin() {
		return m_sLogin;
	}

	public void setM_sLogin(String mSLogin) {
		m_sLogin = mSLogin;
	}

	public String getM_sPassword() {
		return m_sPassword;
	}

	public void setM_sPassword(String mSPassword) {
		m_sPassword = mSPassword;
	}
	
	public boolean execute() {
		InputStream is;
		InputStreamReader isr;
		BufferedReader br;
		String ligne;
		Boolean authOK = false;
				
		// Test de la fonction execute
		logger.log(Level.INFO, "tentative de connection de la part de : "+m_sLogin);
		
		// Lecture du fichier d'authentification
		try {
			// creation du flux de fichier
			is = new FileInputStream("auth.txt");
			isr = new InputStreamReader(is);
			br = new BufferedReader(isr);
			m_sCurrentFolder = System.getProperty("user.dir"); //on determine dans quelrépertoire le serveur à démarrer.
			logger.log(Level.INFO, "Répertoire de travail du serveur : "+ m_sCurrentFolder );
			// recuperation des login et mot de passe
			while ((ligne=br.readLine()) != null){
				String[] temp = ligne.split(":");
				if((temp[0].equals(m_sLogin)) && (temp[1].equals(m_sPassword))){
					authOK = true;
					// Steph : On renseigne le status de l'execution.
					m_sResultatExecution ="Execution réussie : connexion autorisée";
					m_bResultatExecution = true;
					logger.log(Level.INFO, "L'utilisateur "+m_sLogin+" vient de se connecter");
					
					// Creation du repertoire home de l'utilisateur s'il n'existe pas
					File repertoire = new File(m_sLogin);
					if (!repertoire.isDirectory()){
						repertoire.mkdir();
					}
					// On initialise le repertoire courant
					m_sCurrentFolder = m_sCurrentFolder + File.separator +m_sLogin;
				}
			}
			//log un echec de connexion
			if (!authOK){
				logger.log(Level.WARNING, "Echec d'authentification de l'utilisateur "+m_sLogin+" - CONNECTION REFUSE");
				m_sResultatExecution ="Execution réussie : connexion refusé";
			}
			// Fermeture du flux
			is.close();
				
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return authOK;
	}
}
